function [F,T,P] = spectro_cplx(filename_in,nf,agc,atten,val,freqs)
% filename_in = 'acer3_DETECT_1334860210.IF.bin';
% filename_out = 'spect.jpg';
% nf = 4000

fid = fopen(filename_in,'rb');

t_bin = 100e-3;   %time bin [s]
%freqs = 4.0919e6; %sampling frequency [Hz]

piece = floor(t_bin*freqs/2);
fseek(fid,0,1);
nword = (ftell(fid));
fseek(fid,0,-1);

nl = floor(nword/piece);

tt = linspace(0,100,numel(agc));
agc_resampled = interp1(tt,agc,(0:nl-1)*t_bin);

%h = waitbar(0,['Converting...']);

LUT_I_long1 = [1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3;1;-1;1;-1;3;-3;3;-3];
LUT_I_long2 = [1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3];
LUT_Q_long1 = [1;1;-1;-1;1;1;-1;-1;3;3;-3;-3;3;3;-3;-3;1;1;-1;-1;1;1;-1;-1;3;3;-3;-3;3;3;-3;-3;1;1;-1;-1;1;1;-1;-1;3;3;-3;-3;3;3;-3;-3;1;1;-1;-1;1;1;-1;-1;3;3;-3;-3;3;3;-3;-3;1;1;-1;-1;1;1;-1;-1;3;3;-3;-3;3;3;-3;-3;1;1;-1;-1;1;1;-1;-1;3;3;-3;-3;3;3;-3;-3;1;1;-1;-1;1;1;-1;-1;3;3;-3;-3;3;3;-3;-3;1;1;-1;-1;1;1;-1;-1;3;3;-3;-3;3;3;-3;-3;1;1;-1;-1;1;1;-1;-1;3;3;-3;-3;3;3;-3;-3;1;1;-1;-1;1;1;-1;-1;3;3;-3;-3;3;3;-3;-3;1;1;-1;-1;1;1;-1;-1;3;3;-3;-3;3;3;-3;-3;1;1;-1;-1;1;1;-1;-1;3;3;-3;-3;3;3;-3;-3;1;1;-1;-1;1;1;-1;-1;3;3;-3;-3;3;3;-3;-3;1;1;-1;-1;1;1;-1;-1;3;3;-3;-3;3;3;-3;-3;1;1;-1;-1;1;1;-1;-1;3;3;-3;-3;3;3;-3;-3;1;1;-1;-1;1;1;-1;-1;3;3;-3;-3;3;3;-3;-3];
LUT_Q_long2 = [1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3;-3];

P = zeros(nl,nf);

for n = 0:nl-1
    npiece = min(piece,nword-n*piece);
    
    data = fread(fid, npiece,'uint8'); % read the data from the opened file - fid
    
    data_unpack = zeros(4*numel(data),1);

    data_unpack(1:4:end) = LUT_I_long1(data+1);
    data_unpack(2:4:end) = LUT_Q_long1(data+1);
    data_unpack(3:4:end) = LUT_I_long2(data+1);
    data_unpack(4:4:end) = LUT_Q_long2(data+1);
    s = data_unpack(1:2:end) + 1i*data_unpack(2:2:end);
    
    s = s-mean(s); %remove DC
    
    %Compute spectro and store it
    [P(n+1,:),Freq] = pwelch(s, floor(npiece/8) , floor(npiece/16) , nf , freqs , 'twosided' );
    P(n+1,:) = fftshift(P(n+1,:));
    scale = atten(find(val>agc_resampled(n+1),1,'first'));
    if(isempty(scale))
        scale  = atten(end);
    end
    P(n+1,:) = 10^(-scale/10) * P(n+1,:);
    
    %waitbar((n+1)/(nl),h);
end

fclose(fid);
%close(h);

%Return value
[F,T] = meshgrid(Freq-freqs/2,(0:nl-1)*t_bin);

% %Plot part
% fig = figure();
% h = pcolor(F,T,10*log10(P));
% set(h , 'LineStyle', 'none');
% set(gcf, 'Renderer', 'Painters');
% xlabel('Frequency [Hz]');
% ylabel('Time [s]');
% saveas(fig,[out_folder '/' logname '_Frequency_', num2str(floor(filename_in(8:23))),'.jpg']);
% close(fig);
